/* Finally, make the p.t. page writable by the guest OS. */
l1e_add_flags(pte, _PAGE_RW);
- if ( unlikely(__copy_to_user(&linear_pg_table[l1_linear_offset(addr)],
- &pte, sizeof(pte))) )
+ if ( unlikely(__put_user(pte.l1,
+ &linear_pg_table[l1_linear_offset(addr)].l1)) )
{
MEM_LOG("ptwr: Could not update pte at %p", (unsigned long *)
&linear_pg_table[l1_linear_offset(addr)]);
__pu_err; \
})
-#define __get_user_nocheck(x,ptr,size) \
-({ \
- long __gu_err, __gu_val; \
- __get_user_size(__gu_val,(ptr),(size),__gu_err,-EFAULT);\
- (x) = (__typeof__(*(ptr)))__gu_val; \
- __gu_err; \
+#define __get_user_nocheck(x,ptr,size) \
+({ \
+ long __gu_err; \
+ __get_user_size((x),(ptr),(size),__gu_err,-EFAULT); \
+ __gu_err; \
})
-#define __get_user_check(x,ptr,size) \
-({ \
- long __gu_err, __gu_val; \
- __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
- __get_user_size(__gu_val,__gu_addr,(size),__gu_err,-EFAULT); \
- (x) = (__typeof__(*(ptr)))__gu_val; \
- if (!__addr_ok(__gu_addr)) __gu_err = -EFAULT; \
- __gu_err; \
+#define __get_user_check(x,ptr,size) \
+({ \
+ long __gu_err; \
+ __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
+ __get_user_size((x),__gu_addr,(size),__gu_err,-EFAULT); \
+ if (!__addr_ok(__gu_addr)) __gu_err = -EFAULT; \
+ __gu_err; \
})
struct __large_struct { unsigned long buf[100]; };